// 导入Village脚本
import V from "./Village"; 
const {ccclass, property} = cc._decorator;

@ccclass
export default class NewClass extends cc.Component {

    @property({displayName: "Village脚本所在节点", tooltip: "Village脚本所在节点", type: V})
    V: V = null;

    @property({displayName: "任务面板", tooltip: "任务面板", type: cc.Node})
    UI: cc.Node = null;

    @property({displayName: "文字数组", tooltip: "文字数组，显示累积花费的金币、累积击杀的小怪和Boss", type: cc.Label})
    label: cc.Label[] = [];

    @property({displayName: "领取按钮", tooltip: "领取按钮", type: cc.Button})
    btn: cc.Button[] = [];

    @property({displayName: "已领取图标", tooltip: "已领取图标", type: cc.Node})
    icon: cc.Node[] = [];


    onLoad () {
        // 隐藏所有领取按钮
        for (let i = 0; i < this.btn.length; i++) {            
            this.btn[i].interactable = false;
        }

        // 获取各种数据
        // 累积击杀小怪数据
        let foe = Number(cc.sys.localStorage.getItem("Task_Foe"));
        // 累积击杀BOSS数据
        let boss = Number(cc.sys.localStorage.getItem("Task_Boss"));
        // 累积花费金币数据
        let money = Number(cc.sys.localStorage.getItem("Task_money"));


        // 如果有数据
        if (foe != null) {
            // 如果到达了规定的标准
            // 显示按钮
            if (foe >= 100) {
                this.btn[3].interactable = true;
            }
    
            if (foe >= 200) {
                this.btn[4].interactable = true;
            }
    
            if (foe >= 500) {
                this.btn[5].interactable = true;
            }    
        }



        // 如果有数据
        if (boss != null) {
            // 如果到达了规定的标准
            // 显示按钮
            if (boss >= 20) {
                this.btn[6].interactable = true;
            }
        }
    }


    update () {
        // cc.sys.localStorage.removeItem("Task");
        // cc.sys.localStorage.setItem("Task", "0,0,0,0,0,0,0");
        
        // 获取各种数据
        // 累积击杀小怪数据
        let foe = cc.sys.localStorage.getItem("Task_Foe");
        // 累积击杀BOSS数据
        let boss = cc.sys.localStorage.getItem("Task_Boss");
        // 累积花费金币数据
        let money = cc.sys.localStorage.getItem("Task_money");

        // 任务领取数据   根据这个判断哪些是已经领取的，哪些是没领取的
        let task = cc.sys.localStorage.getItem("Task");
        // 截为数组
        let s: string[] = task.split(",");


        // for循环
        for (let i = 0; i < s.length; i++) {          
            // 我们规定0为未领取  1位已领取
            // 如果未领取 
            if (s[i] == "0") {
                // 隐藏已领取图标
                // 显示领取按钮
                this.icon[i].active = false;
                this.btn[i].node.active = true;
            }
            // 如果已领取 
            else {
                // 显示已领取图标
                // 隐藏领取按钮
                this.icon[i].active = true;
                this.btn[i].node.active = false;
            }
        }


        // 如果有数据
        if (money != null) {
            // 显示在文字上
            this.label[0].string = "累积花费" + Number(money) + "金币";
        }
        // 如果没有数据 
        else {
            // 设置显示内容
            this.label[0].string = "累积花费0金币";
        }

        // 如果有数据
        if (foe != null) {
            // 显示在文字上
            this.label[1].string = "累积击杀" + Number(foe) + "个小怪";   
        }
        // 如果没有数据 
        else {
            // 设置显示内容
            this.label[1].string = "累积击杀0个小怪";   
        }

        // 如果有数据
        if (boss != null) {
            // 显示在文字上
            this.label[2].string = "累积击杀" + Number(boss) + "个Boss";   
        }
        // 如果没有数据 
        else {
            // 设置显示内容
            this.label[2].string = "累积击杀0个Boss";
        }


        // 如果有数据
        if (money != null) {
            // 每帧根据规定判断是否达到任务要求
            // 如果达到要求 启用按钮
            if (money >= 5000) {
                this.btn[0].interactable = true;
            }
    
            if (money >= 10000) {
                this.btn[1].interactable = true;
            }
    
            if (money >= 20000) {
                this.btn[2].interactable = true;
            }
        }
    }


    // 打开任务面板
    open () {
        this.UI.active = true;
    }


    // 关闭任务面板
    close () {
        this.UI.active = false;
    }


    // 升级专用函数
    upgrade () {
        this.V.upgrade();
    }


    // 增加金币专用函数   num为增加多少
    add_money (num: number) {
        // 获取金币数据
        let m = cc.sys.localStorage.getItem("money");
        // 如果没有金币
        if (m == null) {
            // 存储
            cc.sys.localStorage.setItem("money", num);
        } else {
            // 如果有金币那就加上num
            let money = Number(m) + num;
            cc.sys.localStorage.setItem("money", money);
        }
    }


    // 增加经验值专用函数   num为加多少
    add_EXP (num: number) {
        this.V.add_EXP(num);
    }

}
